package com.tjetc._1enum;

import java.util.Arrays;

public class _3EnumMethod {
    /*
        1.	toString:Enum 类已经重写过了，返回的是当前对象名,子类可以重写该方法，用于返回对象的属性信息
        2.	name： 返回当前对象名（常量名），子类中不能重写
        3.	ordinal： 返回当前对象的位置号，默认从 0 开始
        4.	values： 返回当前枚举类中所有的常量
        5.	valueOf：将字符串转换成枚举对象，要求字符串必须为已有的常量名，否则报异常。
        6.	compareTo： 比较两个枚举常量， 比较的就是编号。
     */
    public static void main(String[] args) {
        Season2 spring = Season2.SPRING;
        System.out.println(spring);

        System.out.println(spring.name());
        // 返回的是在枚举类中定义枚举对象时的顺序编号
        System.out.println(spring.ordinal());

        Season2 spring1 = Season2.SPRING;
        System.out.println(spring.ordinal());

        Season2[] values = Season2.values();
        // 传统的遍历数组的方式 比较适合使用索引的场景
        System.out.println(Arrays.toString(values));

        System.out.println("---------------------");
        // 增强for循环 比较适合输出数据的场景 values.for 增强for是一个语法糖 他其实是集合迭代的接口
        for (Season2 season2 : values) {
            System.out.println(season2);
        }

        Season2 spring2 = Season2.valueOf("SPRING");
        System.out.println(spring2);

        Season2 winter = Season2.WINTER;
        System.out.println(winter.compareTo(spring2));
    }
}


enum Season2 {
    // 不同常量之间使用逗号分割,常量值必须在类的开头部分, 使用分号作为常量值结束的标志，
    // 如果没有任何的其他东西，可以省略分号
    SPRING("春天", "🌿"),
    SUMMER("夏天", "🥵"),
    AUTUMN("秋天", "🍂"),
    WINTER("冬天", "⛄");

    // 成员的属性必须放在常量的后面
    private final String name;
    private final String des;

    public String getName() {
        return name;
    }

    public String getDes() {
        return des;
    }

    Season2(String name, String des) {
        this.name = name;
        this.des = des;
    }

    @Override
    public String toString() {
        return "Season2{" +
                "name='" + name + '\'' +
                ", des='" + des + '\'' +
                '}';
    }
}
